home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’92 / Text Capture FKEY / patching.h < prev    next >
Text File  |  1992-04-13  |  815b  |  27 lines

  1. #define PATCH(trap)        Old_ ## trap = NGetTrapAddress(_ ## trap, ToolTrap );\
  2.     NSetTrapAddress( (long)My_ ## trap, _ ## trap, ToolTrap )
  3.  
  4. #define UNPATCH(trap)    NSetTrapAddress( (long)Old_ ## trap,\
  5.                                      _ ## trap, ToolTrap )
  6.  
  7. #define        HEAD_PATCH_HEADER(trapname)    \
  8.         movem.l    a0-a5/d0-d7, -(SP)    ; a7 is SP, a6 is lunk\
  9.         LEA     main, A4            ; set up globals\
  10.         bra.s    @1                    \
  11.     @0    dc.L    0                    ; place to store old trap address\
  12.     @1    LEA        @0, A0                \
  13.         move.L    Old_ ## trapname, (A0)    ; store it in @0
  14.  
  15. #define        HEAD_PATCH_FINISH        \
  16.         movem.L    (SP)+, A0-A5/D0-D7    \
  17.         unlk    A6                    \
  18.         move.L    @0, -(SP)            \
  19.         RTS
  20.  
  21. #define        TAIL_PATCH_FINISH(arg_bytes)        \
  22.     movem.L    (SP)+, A0-A5/D0-D7    ; restore registers\
  23.     unlk    A6                    \
  24.     move.L    (SP), arg_bytes(SP)    ; copy return address into args\
  25.     addI.L    #+arg_bytes, SP        ; pop arguments\
  26.     RTS
  27.